Recognise top-level JSON-LD in Operation.process_json#17
Merged
Conversation
A dict carrying any JSON-LD reserved key (@context, @graph, @id, @type) is now parsed to an rdflib.Graph by Operation.process_json itself, ahead of the existing generic-dict recursion. Previously every consuming op (POST, PUT, Merge, ldh-Create*/Add*) re-parsed the same JSON-LD payload in its own execute_json — the runtime treated bare JSON-LD as opaque JSON to recurse into, only the ops at the boundary knew its semantics. Symmetric with the bare-value auto-wrap (json_to_rdflib): a JSON scalar becomes a Literal, a JSON-LD object becomes a Graph. Unblocks the chat-extraction case: an LLM that emits JSON-LD as its final answer (image metadata, structured extraction) gets a real Graph result the renderer can lay out, rather than a dict of Literals that renders as raw text. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Operation.process_jsonnow parses a top-level dict carrying any JSON-LD reserved key (@context,@graph,@id,@type) into anrdflib.Graph, ahead of the existing generic-dict recursion. Symmetric with the bare-value auto-wrap (json_to_rdflib): a JSON scalar becomes aLiteral; a JSON-LD object becomes aGraph.POST,PUT,Merge,ldh-CreateItem,ldh-CreateContainer, theldh-Add*family) re-parsed the same JSON-LD payload in its ownexecute_json. The runtime treated bare JSON-LD as opaque JSON to recurse into; only the ops at the boundary knew its semantics.Test plan
uv run pytest tests/unit -q→ 96 passed, 0 failed.@context+@graphdescribing aschema:Car) handed toOperation.process_jsonnow returns anrdflib.Graphwith the expected triple count, instead of a dict.render_graph.🤖 Generated with Claude Code